package com.ssm.util;

import org.ini4j.Config;
import org.ini4j.Ini;
import org.ini4j.Profile;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * ini工具类
 */
public class IniUtil {

    /**
     *  写入ini文件
     * @param iniFile 文件实体
     * @param updateData 更新内容
     * @throws IOException
     */
    public static void updateIniFile(File iniFile, Map<String, Map<String, String>> updateData) throws IOException {
        Ini ini = new Ini();
        ini.load(iniFile);
        Config config = new Config();
        config.setEscape(false);
        ini.setConfig(config);
        Profile.Section section = null;
        Map<String, String> dataMap = null;
        for (String sect : updateData.keySet()) {
            section = ini.get(sect);
            dataMap = updateData.get(sect);
            for (String key : dataMap.keySet()) {
                section.put(key, dataMap.get(key) == null ? "" :
                        dataMap.get(key));
            }
        }
        ini.store(iniFile);
    }

    /**
     * 读取ini文件
     * @param iniFile 文件实体
     * @return Map 返回内容
     * @throws IOException
     */
    public static Map<String, Map<String, String>> readIni(File iniFile) throws IOException {
        Ini ini = new Ini();
        ini.load(iniFile);
        Config config = new Config();
        config.setEscape(false);
        ini.setConfig(config);
        Map<String, Map<String, String>> map =  new HashMap<>();
        for (String sec : ini.keySet()) {
            Map<String, String> m = new HashMap<>();
            Profile.Section secMap = ini.get(sec);
            for (String kv : secMap.keySet()) {
                m.put(kv, secMap.get(kv));
            }
            map.put(sec, m);
        }
        return map;
    }

}